package com.ulook.planetmanager.util.net;

import java.io.File;
import java.util.List;

import okhttp3.MediaType;

/**
 * 描述：异步请求工具类
 *
 * @author: L1998
 * @data: 2021/3/24
 */
public class AsynRequestUtil {

    /**
     * GET请求
     *
     * @param url      URL请求地址
     * @param params   入参
     * @param clazz    需要解析的实体类
     * @param callback 回调接口
     */
    public static void get(String url,
                           RequestParams params,
                           Class<?> clazz,
                           ResponseCallback callback) {

        CommonOkHttpClient.get(CommonRequest.createGetRequest(url, params), new ResposeDataHandle(callback, clazz));
    }

    /**
     * POST请求
     *
     * @param url      URL请求地址
     * @param params   入参
     * @param callback 回调接口
     * @param clazz    需要解析的实体类
     */
    public static void post(String url,
                            RequestParams params,
                            Class<?> clazz,
                            ResponseCallback callback) {

        CommonOkHttpClient.post(CommonRequest.createPostRequest(url, params), new ResposeDataHandle(callback, clazz));
    }

    /**
     * 下载图片 Get方式
     *
     * @param url       URL请求地址
     * @param params    入参
     * @param dir       保存文件夹
     * @param imgPath   存储地址
     * @param callback  回调接口
     */
    public static void getLoadImg(String url,
                                  RequestParams params,
                                  String dir,
                                  String imgPath,
                                  ResponseByteCallback callback) {

        CommonOkHttpClient.downLadImg(CommonRequest.createGetRequest(url, params), dir, imgPath, callback);
    }

    /**
     * 下载图片 Post方式
     *
     * @param url       URL请求地址
     * @param params    入参
     * @param dir       保存文件夹
     * @param fileName   存储地址
     * @param callback  回调接口
     */
    public static void postLoadImg(String url,
                                   RequestParams params,
                                   String dir,
                                   String fileName,
                                   ResponseByteCallback callback) {

        CommonOkHttpClient.downLadImg(CommonRequest.createPostRequest(url, params), dir, fileName, callback);
    }

    /**
     * 加载图片（不保存） Post方式
     *
     * @param url       URL请求地址
     * @param params    入参
     * @param callback  回调接口
     */
    public static void loadImg(String url,
                               RequestParams params,
                               ResponseCallback callback) {

        CommonOkHttpClient.loadImg(CommonRequest.createPostRequest(url, params), callback);
    }

    /**
     * 表单和文件, 混合上传服务器
     *
     * @param url       URL请求地址
     * @param params    入参
     * @param files     文件列表
     * @param clazz     需要解析的实体类
     * @param callback  回调接口
     */
    public static void postMultipart(String url,
                                     RequestParams params,
                                     List<File> files,
                                     Class<?> clazz,
                                     ResponseCallback callback) {

        CommonOkHttpClient.post(CommonRequest.createMultipartRequest(url, params, files),
                new ResposeDataHandle(callback, clazz));
    }

    /**
     * 指定MediaType, 表单和文件, 混合上传服务器
     *
     * @param url
     * @param params
     * @param files
     * @param clazz
     * @param callback
     * @param mediaType
     */
    public static void postMultipart(String url,
                                     RequestParams params,
                                     List<File> files,
                                     Class<?> clazz,
                                     ResponseCallback callback,
                                     MediaType mediaType) {

        CommonOkHttpClient.post(CommonRequest.createMultipartRequest(url, params, files, mediaType),
                new ResposeDataHandle(callback, clazz));
    }
}
